(function($) {
	$.fn.tree = function(event) {
		if ($.isFunction(event))
			$(this).find('li>.node').bind('click', function(e) {
				var ul = $(this).parent().children('ul');
				if (ul.length == 0) {
					if (event != null)
						event(this);
				} else {
					if (ul.is(':visible'))
						$(this).children('i').attr('class', 'fa fa-plus');
					else
						$(this).children('i').attr('class', 'fa fa-minus');
					ul.slideToggle(100);
					$(this).blur();
				}
			}).each(function() {
				var ul = $(this).parent().children('ul');
				if (ul.length != 0) {
					if (ul.is(':visible'))
						$(this).prepend(' ').prepend('<i class="fa fa-minus"></i>');
					else
						$(this).prepend(' ').prepend('<i class="fa fa-plus"></i>');
				}
			});
		else if (event == 'expand')
			$(this).find('ul').each(function() {
				if (!$(this).is(':visible')) {
					$(this).parent().children('.node').children('i').attr('class', 'fa fa-minus');
					$(this).slideToggle(100);
				}
			});
		else if (event == 'collapse')
			$(this).find('li>ul').each(function() {
				if ($(this).is(':visible')) {
					$(this).parent().children('.node').children('i').attr('class', 'fa fa-plus');
					$(this).slideToggle(100);
				}
			});
	};
})(jQuery);